package com.dyz.LeetCodeforSwordFingerOffer;

public class IsNumber20 {
    //一道逻辑题
    public boolean isNumber(String s) {
        //判断是否为空的数组
        //.之前不能出现. e
        //e之前不能出现e 必须是数字 123e10
        //12e 12e+ 之后也有数字
        //+ - 第一个位置 或者e后面的第一个位置
        //出现其他字符
        if(s==null || s.length()==0){return false;}
        s = s.trim();
        boolean num = false;
        boolean dot = false;
        boolean e = false;
        char [] chars = s.toCharArray();
        //遍历
        for(int i=0; i<chars.length;i++){
            if(chars[i]>='0' && chars[i]<='9'){
                num=true;
            }else if(chars[i]=='.'){
                //.之前不能出现. e
                if(e||dot){
                    return false;
                }
                dot = true;
            }else if(chars[i]=='E' || chars[i]=='e'){
                //e之前不能出现e 必须是数字 123e10
                if(e||!num){
                    return false;
                }
                e=true;
                //12e 12e+ 之后也有数字
                num=false;
            }else if(chars[i]=='+' || chars[i]=='-'){
                //+ - 第一个位置 或者e后面的第一个位置
                if(i!=0&&chars[i-1]!='e'&&chars[i-1]!='E'){
                    return false;
                }
            }else {
                //出现其他字符
                return false;
            }
        }
        return num;

    }
}
